
package com.ami.kvm.jviewer.hid;

public abstract interface KeyProcessor {
	
	public static final int MOD_LEFT_CTRL = 1;

	public static final int MOD_RIGHT_CTRL = 16;

	public static final int MOD_LEFT_SHIFT = 2;

	public static final int MOD_RIGHT_SHIFT = 32;

	public static final int MOD_LEFT_ALT = 4;

	public static final int MOD_RIGHT_ALT = 64;

	public static final int MOD_LEFT_WIN = 8;

	public static final int MOD_RIGHT_WIN = 128;

	public static final int VK_102KEY = 226;

	public static final char NULL_CHAR = '\000';

	public static final String[] normalCharSet = { "`1234567890-=qwertyuiop[]\\asdfghjkl;'\\zxcvbnm,./",
			"`1234567890-=qwertyuiop[]#asdfghjkl;'\\zxcvbnm,./", "º1234567890'¡qwertyuiop`+çasdfghjklñ´<zxcvbnm,.-",
			"²&é\"'(-è_çà)=azertyuiop^$*qsdfghjklmù<wxcvbn,;:!", "^1234567890ß´qwertzuiopü+#asdfghjklöä<yxcvbnm,.-",
			"\\1234567890'ìqwertyuiopè+ùasdfghjklòà<zxcvbnm,.-", "½1234567890+´qwertyuiopå¨'asdfghjklæø<zxcvbnm,.-",
			"§1234567890+´qwertyuiopå¨'asdfghjklöä<zxcvbnm,.-", "§1234567890'^qwertzuiopü¨$asdfghjklöä<yxcvbnm,.-",
			"|1234567890+\\qwertyuiopå¨'asdfghjkløæ<zxcvbnm,.-", "\\1234567890'«qwertyuiop+´~asdfghjklçº<zxcvbnm,.-",
			"§1234567890+´qwertyuiopå¨'asdfghjklöä<zxcvbnm,.-", ";1234567890-=/'קראטוןםפ][\\שדגכעיחלךף,\\זסבהנמצתץ.",
			"²&é\"'(§è!çà)-azertyuiop^$µqsdfghjklmù<wxcvbn,;:=", "²&é\"'(§è!çà)-azertyuiop^$µqsdfghjklmù<wxcvbn,;:=",
			"ё1234567890-=йцукенгшщзхъ\\фывапролджэ\\ячсмитьбю.", "1234567890-^qwertyuiop@[]asdfghjkl;:¥zxcvbnm,./\\",
			"+1234567890/-fgğıodrnhpqwxuieaütkmlyş<jövcçzsb.,", "\"1234567890*-qwertyuıopğü,asdfghjklşi<zxcvbnmöç.",
			"ぬふあうえおやゆよわほへたていすかんなにらせ゛゜むちとしはきくまのりれけーつさそひこみもねるめろ", "ヌフアウエオヤユヨワホヘタテイスカンナニラセﾞ゜ムチトシハキクマノリレケーツサソヒコミモネルメロ",
			"@1234567890/°qwertyuiop¨*<asdfghjkl+´]zxcvbnm,.-" };

	public static final String[] shiftedCharSet = { "~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"|ZXCVBNM<>?",
			"¬!\"£$%^&*()_+QWERTYUIOP{}~ASDFGHJKL:@|ZXCVBNM<>?", "ª!\"·$%&/()=?¿QWERTYUIOP^*ÇASDFGHJKLÑ¨>ZXCVBNM;:_",
			"1234567890°+AZERTYUIOP¨£µQSDFGHJKLM%>WXCVBN?./§", "°!\"§$%&/()=?`QWERTZUIOPÜ*'ASDFGHJKLÖÄ>YXCVBNM;:_",
			"|!\"£$%&/()=?^QWERTYUIOPé*§ASDFGHJKLç°>ZXCVBNM;:_", "§!\"#¤%&/()=?`QWERTYUIOPÅ^*ASDFGHJKLÆØ>ZXCVBNM;:_",
			"½!\"#¤%&/()=?`QWERTYUIOPÅ^*ASDFGHJKLÖÄ>ZXCVBNM;:_", "°+\"*ç%&/()=?`QWERTZUIOPè!£ASDFGHJKLéà>YXCVBNM;:_",
			"§!\"#¤%&/()=?`QWERTYUIOPÅ^*ASDFGHJKLØÆ>ZXCVBNM;:_", "|!\"#$%&/()=?»QWERTYUIOP*`^ASDFGHJKLÇª>ZXCVBNM;:_",
			"½!\"#¤%&/()=?`QWERTYUIOPÅ^*ASDFGHJKLÖÄ>ZXCVBNM;:_", "~!@#$%^&*)(_+QWERTYUIOP}{|ASDFGHJKL:\"|ZXCVBNM><?",
			"³1234567890°_AZERTYUIOP¨*£QSDFGHJKLM%>WXCVBN?./+", "³1234567890°_AZERTYUIOP¨*£QSDFGHJKLM%>WXCVBN?./+",
			"Ё!\"№;%:?*()_+ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭ|ЯЧСМИТЬБЮ,", "!\"#$%&'() =~QWERTYUIOP`{}ASDFGHJKL+*|ZXCVBNM<>?_",
			"*!\"^$%&'()=?_FGĞIODRNHPQWXUİEAÜTKMLYŞ>JÖVCÇZSB:;:", "é!'^+%&/()=?_QWERTYUIOPĞÜ;ASDFGHJKLŞİ>ZXCVBNMÖÇ:",
			"ぬふぁぅぇぉゃゅょをほへたてぃすかんなにらせ゛「」ちとしはきくまのりれけーっさそひこみも、。・ろ", "ヌフｧｩｪｫｬｭｮヲホヘタテｨスカンナニラセﾞ「」チトシハキクマノリレケーッサソヒコミモ、。・ロ",
			"§!\"#$%&_()'?~QWERTYUIOP^|>ASDFGHJKL±`[ZXCVBNM;:=" };

	public static final String[] normalCapsCharSet = { "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'\\ZXCVBNM,./",
			"`1234567890-=QWERTYUIOP[]#ASDFGHJKL;'\\ZXCVBNM,./", "º1234567890'¡QWERTYUIOP`+ÇASDFGHJKLÑ´<ZXCVBNM,.-",
			"²1234567890°+AZERTYUIOP-£µQSDFGHJKLM%<WXCVBN?./§", "^!\"§$%&/()=?´QWERTZUIOPÜ*'ASDFGHJKLÖÄ<YXCVBNM;:-",
			"\\1234567890'ìQWERTYUIOPè+ùASDFGHJKLòà<ZXCVBNM,.-", "½1234567890+´QWERTYUIOPÅ¨'ASDFGHJKLÆØ<ZXCVBNM,.-",
			"§1234567890+´QWERTYUIOPÅ¨'ASDFGHJKLÖÄ<ZXCVBNM,.-", "§1234567890'^QWERTZUIOPÜ-$ASDFGHJKLÖÄ<YXCVBNM,.-",
			"|1234567890+\\QWERTYUIOPÅ¨'ASDFGHJKLØÆ<ZXCVBNM,.-", "\\1234567890'«QWERTYUIOP+´~ASDFGHJKLÇº<ZXCVBNM,.-",
			"§1234567890+´QWERTYUIOPÅ-'ASDFGHJKLÖÄ<ZXCVBNM,.-", ";1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'\\ZXCVBNM,./",
			"²1234567890°_AZERTYUIOP¨*£QSDFGHJKLM%<WXCVBN?./+ ", "²1234567890°_AZERTYUIOP¨*£QSDFGHJKLM%<WXCVBN?./+",
			"Ё1234567890-=ЙЦУКЕНГШЩЗХЪ\\ФЫВАПРОЛДЖЭ\\ЯЧСМИТЬБЮ.", "1234567890-^QWERTYUIOP@[]ASDFGHJKL;:¥ZXCVBNM,./\\",
			"+1234567890/-FGĞIODRNHPQWXUİEAÜTKMLYŞ<JÖVCÇZSB.,", "\"1234567890*-QWERTYUIOPĞÜ,ASDFGHJKLŞİ<ZXCVBNMÖÇ.",
			"ぬふあうえおやゆよわほへたていすかんなにらせ゛゜むちとしはきくまのりれけーつさそひこみもねるめろ", "ヌフアウエオヤユヨワホヘタテイスカンナニラセﾞ゜ムチトシハキクマノリレケーツサソヒコミモネルメロ",
			"@1234567890/°QWERTYUIOP¨*<ASDFGHJKL+´]ZXCVBNM,.-" };

	public static final String[] shiftedCapsCharSet = { "~!@#$%^&*()_+qwertyuiop{}|asdfghjkl:\"|zxcvbnm<>?",
			"¬!\"£$%^&*()_+qwertyuiop{}~asdfghjkl:@|zxcvbnm<>?", "ª!\"·$%&/()=?¿qwertyuiop^*çasdfghjklñ->zxcvbnm;:_",
			"&é\"'(-è_çà)=azertyuiop^$*qsdfghjklmù>wxcvbn,;:!", "°1234567890ß´qwertzuiopü+#asdfghjklöä>yxcvbnm,._",
			"|!\"£$%&/()=?^qwertyuiopé*§asdfghjklç°>zxcvbnm;:_", "§!\"#¤%&/()=?`qwertyuiopå^*asdfghjklæø>zxcvbnm;:_",
			"½!\"#¤%&/()=?`qwertyuiopå^*asdfghjklöä>zxcvbnm;:_", "°+\"*ç%&/()=?`qwertzuiopÈ!£asdfghjklÉÀ>yxcvbnm;:_",
			"§!\"#¤%&/()=?`qwertyuiopå^*asdfghjkløæ>zxcvbnm;:_", "|!\"#$%&/()=?»qwertyuiop*`^asdfghjklçª>zxcvbnm;:_",
			"½!\"#¤%&/()=?`qwertyuiopå^*asdfghjklöä>zxcvbnm;:_", "ְֱֲֳִֵֶַָֹּׁׂ/'קראטוןםפ][ֻשדגכעיחלךף,|זסבהנמצתץ.",
			"³&é\"'(§è!çà)-azertyuiop^$µqsdfghjklmù>wxcvbn,;:= ", "³&é\"'(§è!çà)-azertyuiop^$µqsdfghjklmù>wxcvbn,;:=",
			"ё!\"№;%:?*()_+йцукенгшщзхъ/фывапролджэ|ячсмитьбю,", "!\"c#$%&'() =~qwertyuiop`{}asdfghjkl+*|zxcvbnm<>?_",
			"*!\"^$%&'()=?_fgğıodrnhpqwxuieaütkmlyş>jövcçzsb:;", "é!'^+%&/()=?_qwertyuıopğü;asdfghjklşi>zxcvbnmöç:",
			"ぬふぁぅぇぉゃゅょをほへたてぃすかんなにらせ゛「」ちとしはきくまのりれけーっさそひこみも、。・ろ", "ヌフｧｩｪｫｬｭｮヲホヘタテｨスカンナニラセﾞ「」チトシハキクマノリレケーッサソヒコミモ、。・ロ",
			"§!\"#$%&_()'?~qwertyuiop^|>asdfghjkl±`[zxcvbnm;:=" };

	public static final String[] altGrCharSet = { " ", "¦€éúíóá", "\\|@#~€¬€[]}{", "~#{[|`\\^@]}€¤", "²³{[]}\\@€~|µ",
			"€€[]@#", "@£$€{[]}|€~\\µ", "@£$€{[]}\\€~|µ", "¦@#°§¬|¢´~€[]}{\\", "@£$€{[]}´€~µ", "@£§€{[]}€¨]",
			"@£$€{[]}\\€~|µ", "₪ֿ€װײױ", "|@#{[^{}€[]`´\\~", "|@#{[^{}€[]`´\\~", " ", " ",
			"¬¹²#¼½¾{[]}\\|@¶¥ø£¨~`æß€´|«»¢µ×÷­", "<>£#$½{[]}\\|@€i¨~`æß´|", " ", " ", "¬¹²³¼½¾£{}\\¸€¶ß¦«»¢µ·" };

	public static final String[][] altGrIndex = { { "-1" }, { "16", "20", "31", "35", "36", "37", "42" },
			{ "16", "17", "18", "19", "20", "21", "22", "31", "39", "40", "41", "52" },
			{ "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "31", "40" },
			{ "18", "19", "23", "24", "25", "26", "27", "29", "31", "40", "53", "60" },
			{ "21", "31", "39", "40", "51", "52" },
			{ "18", "19", "20", "21", "23", "24", "25", "26", "28", "31", "40", "53", "60" },
			{ "18", "19", "20", "21", "23", "24", "25", "26", "27", "31", "40", "53", "60" },
			{ "17", "18", "19", "20", "21", "22", "23", "24", "27", "28", "31", "39", "40", "41", "52", "53" },
			{ "18", "19", "20", "21", "23", "24", "25", "26", "28", "31", "40", "60" },
			{ "18", "19", "20", "21", "23", "24", "25", "26", "31", "39", "40" },
			{ "18", "19", "20", "21", "23", "24", "25", "26", "27", "31", "40", "53", "60" },
			{ "20", "27", "31", "35", "47", "48" },
			{ "17", "18", "19", "20", "21", "22", "25", "26", "31", "39", "40", "41", "52", "53", "63" },
			{ "17", "18", "19", "20", "21", "22", "25", "26", "31", "39", "40", "41", "52", "53", "63" }, { "-1" },
			{ "-1" },
			{ "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "32", "34", "37",
					"38", "39", "40", "41", "42", "43", "44", "51", "53", "54", "55", "56", "60", "61", "62", "63" },
			{ "16", "17", "18", "19", "20", "21", "23", "24", "25", "26", "27", "28", "29", "31", "36", "39", "40",
					"41", "42", "43", "51", "53" },
			{ "-1" }, { "-1" }, { "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "27", "28", "31", "32",
					"43", "53", "54", "55", "56", "60", "62" } };

	public static final String[] shiftedAltGrCharSet = { " ", "ÉÚÍÓÁ", " ", " ", " ", "{}", " ", " ", " ", " ", " ",
			" ", " ", " ", " ", " ", " ", "¡³¤¿®ØÆ§ª¦<>©º", "İÆ", " ", " ", " " };

	public static final String[][] shiftedAltGrIndex = { { "-1" }, { "31", "35", "36", "37", "42" }, { "-1" }, { "-1" },
			{ "-1" }, { "39", "40" }, { "-1" }, { "-1" }, { "-1" }, { "-1" }, { "-1" }, { "-1" }, { "-1" }, { "-1" },
			{ "-1" }, { "-1" }, { "-1" },
			{ "17", "19", "20", "27", "32", "37", "42", "43", "45", "53", "54", "55", "56", "60" }, { "36", "42" },
			{ "-1" }, { "-1" }, { "-1" } };

	public abstract byte[] convertKeyCode(int paramInt1, int paramInt2, boolean paramBoolean, char paramChar);

	public abstract void setAutoKeybreakMode(boolean paramBoolean);

	public abstract boolean getAutoKeybreakMode();
}
